34. Find First and Last Position of Element in Sorted Array

题目 34. Find First and Last Position of Element in Sorted Array

image-e8db008d

思路分析

image-253788a3

代码实现

class Solution {

    int SL(int[] nums,int target){
        int l=0,r=nums.length-1;
        while(l<r){
            int mid = l+r>>1;
            if(nums[mid]>=target){
                r=mid;
            }else{
                l=mid+1;
            }
        }
        return r;
    }

    int SR(int[] nums,int target){
        int l=0,r=nums.length-1;
        while(l<r){
            int mid = l+r+1>>1;
            if(nums[mid]<=target){
                l=mid;
            }else{
                r=mid-1;
            }
        }
        return r;
    }

    public int[] searchRange(int[] nums, int target) {
        if (nums.length == 0) {
            return new int[]{-1, -1};
        }
        
        int[] ans = new int[2];
        int l=SL(nums,target);
        if (nums[l] != target) {
            return new int[]{-1, -1};
        }
        
        int r=SR(nums,target);

        ans[0] = l;
        ans[1] = r;
        return ans;
    }
}

同类题型

视频讲解